public class wercs {
    class Solution {
        public String minWindow(String ss, String tt) {
            char[] s = ss.toCharArray();
            char[] t = tt.toCharArray();
            int[] hash1 = new int[128];//
            int[] hash2 = new int[128];//窗口
            int kinds = 0;
            for(char ch : t){
                if(hash1[ch]++==0){
                    kinds++;
                }
            }
            int min = Integer.MAX_VALUE;
            int begin = -1;
            for(int left =0,right = 0,count = 0; right<s.length ; right++){
                char in = s[right];
                if(++hash2[in]==hash1[in]){
                    count++;
                }
                while(count==kinds){
                    if(right-left+1<min){
                        begin = left;
                        min = right-left+1;
                    }
                    char out = s[left++];
                    if(hash2[out]--==hash1[out]){
                        count--;
                    }
                }
            }
            if(begin==-1){
                return new String();
            }
            else{
                return ss.substring(begin,begin+min);
            }
        }
    }
}
